Computing devices have long used displays to present information to users of the devices. In early computers, monitors using cathode ray tubes were used to create displays. The computing device controlled the information on the display by writing information to a display controller, which was inside the computing device. The display controller then generated analog signals to cause the monitor to display the required information.
The display controller was a hardware component connected to the monitor through a cable and interfacing to other components of the computing device over a standardized bus within the computing device. The display controller was controlled by a software component called a display driver. In some instances, the display driver was written for a specific monitor, but in many instances, a display controller could generate required control signals for a monitor using a standard display driver.
More recently, smaller and lower power display devices have been used as computer monitors. For example, TFT and LCD monitors are widely used instead of cathode ray tube monitors. Though implemented with different technology, the basic hardware and software architecture of a computer system using a TFT or LCD monitor is the same as for a computing device using a cathode ray tube monitor.
Smaller and lower power display devices have also enabled other forms of user displays instead of or in addition to traditional computer monitors. Some computing devices incorporate auxiliary displays that may be used to present information to a user on small displays close to a point of use or in ways other than through a traditional monitor. As one example, a laptop computer may be equipped with a auxiliary display on an external surface. Such an auxiliary display can be used to present information to a user when the laptop is closed and the main display is not available.
Auxiliary displays may also be incorporated in devices detached from the core computing device. Printers and keyboards may include auxiliary displays. These auxiliary displays may be used for functions such as displaying “thumbnails” of documents about to be printed or to indicate special functions mapped to keys on the keyboard. Also, devices that can communicate wirelessly with a computing device may have displays that can serve as auxiliary displays for a computing device. For example, a Personal Digital Assistant (PDA) may have a display that can be used as an auxiliary display for a computing device.
Consequently, to communicate with an auxiliary display device, a computing device may need to communicate over any of multiple transports. For example, if the auxiliary display is part of a device that is physically connected to the computing device, that device may communicate with the computing device over a Universal Serial Bus (USB). Alternatively, if the auxiliary display is part of a portable electronic device, that device may communicate with the computing device over a wireless transport, such as Bluetooth.
To aid in the use of auxiliary displays, computing devices may be equipped with a platform that provides a mechanism for application programs to interface with a device containing an auxiliary display. Such a platform may provide some common functions and services useful in communicating with auxiliary display auxiliary display devices. Such a framework may be provided, for example, in some versions of the Microsoft's Windows® Vista® operating system. The framework is referred to as the SideShow framework.
To reduce the complexity of creating drivers for each device controlled through the SideShow framework, that framework uses a known communication framework to enable applications executing on a computing device to send commands to a device with an auxiliary display and receive notifications of events from such a device. As an example, the .NET microframework may be used as a mechanism for a computing device to exchange information with a device with an auxiliary display. However, use of this framework requires firmware customized to the device to enable the .NET framework to execute on the device.